next_permutation 包含在头文件<algorithm> 中
输出自然数1到n所有不重复的排列，即n的全排列，要求所产生的任一数字序列中不允许出现重复的数字。
int n,a[maxn];
for(int i=1;i <= n;i ++) a[i]=i;//输出1~n的全排列
do
{
    for(int i=1;i <= n;i ++) 
        printf("%5d",a[i]);
}while(next_permutation(a+1,a+1+n));

for(int i=1;i <= n;i ++)cin >> a[i];
while(m--)//全排列m次就是的第m大的排列
{
    next_permutation(a+1,a+1+n);
    for(int i=1;i<= n;i ) 
        printf("%d ",a[i]);
    cout << endl;
}

1.min_element(first,last) 寻找范围内最小值，返回迭代器
int main()
{
    vector<int> v;
    vector<int> iterator pos;
    v.push_back(1);
    v.push_back(3);
    v.push_back(-8);
    v.push_back(8);
    pos=min_element(v.begin(),v.end());
    cout<<*pos << endl;
}
输出：-8
2.max_element(first,last) 寻找范围内最大值，返回迭代器
int main()
{
    vector<int> v;
    vector<int> iterator pos;
    v.push_back(1);
    v.push_back(3);
    v.push_back(-8);
    v.push_back(8);
    pos=max_element(v.begin(),v.end());
    cout<<*pos << endl;
}
输出：8

atoi(char) 把字符串（字符char）转换成整型数的一个函数
int main()
{
    int data;
    data=atoi("123");
    printf("%d\n",data);
    return 0;
}
stoi;把字符串（string）转换成整数
typedef unsigned long long ll;
ll stoi(char *ss,ll l,ll r)
{
    ll res=0;
    if(l>r)return 0;
    for (ll i=l;i <= r;i ++)
    {
        res*=10;
        res+=ss[i]-'0';
    }
    return res;
}

//stl  如果只是简单地找x或x附近的数，就用STL的lower_bound()和upper_bound()函数。
//lower_bound(begin,end,num)：从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字，找到返回该数字的地址，不存在则返回end。
int pos1=lower_bound(num,num+6,7)-num; 
//upper_bound(begin,end,num)：从数组的begin位置到end-1位置二分查找第一个大于num的数字
int pos2=upper_bound(num,num+6,7)-num; 
/*
（1）查找第一个与x相等的元素：lower_bound()且 = x。
（2）查找最后一个与x相等的元素：upper_bound()的前一个且 = x。
（3）查找最后一个等于或者小于x的元素：upper_bound()的前一个。
（4）查找最后一个小于x的元素：lower_bound()的前一个。
（5）单调序列中数x的个数：upper_bound() - lower_bound()。
*/